home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / dskut / hdsource.zip / HDMSG.ASM < prev    next >
Assembly Source File  |  1986-02-24  |  9KB  |  238 lines

  1.      PAGE     64,132            ;PAGE WIDTH,LENGTH
  2.      .SALL
  3.      TITLE     PC/AT DIAGNOSTIC - MESSAGE PRINT ROUTINE
  4. ; **********************************************************************
  5. ; *                                       *
  6. ; *    MODULE NAME    HDMSG                           *
  7. ; *    AUTHOR           JIM BRACKING                       *
  8. ; *                                       *
  9. ; *    DECSRIPTION    THIS PROGRAM PERFORMS THE FOLLOWING           *
  10. ; *               FUNCTIONS:                       *
  11. ; *                                       *
  12. ; *               1. DECODE THE ERROR MESSAGE AND DISPLAY IT      *
  13. ; *              IF PRINT=ON THEN PRINT THE MESSAGE           *
  14. ; *                                       *
  15. ; **********************************************************************
  16. ;
  17. ; **********************************************************************
  18. ; *            EXTERNAL PROGRAM REFERENCES               *
  19. ; **********************************************************************
  20.      EXTRN     SCRMGR:NEAR
  21. ; **********************************************************************
  22. ; *              EXTERNAL DATA REFERENCES               *
  23. ; **********************************************************************
  24.      INCLUDE HDDATA.ASM
  25. ; **********************************************************************
  26. ; *            EXTERNAL SUBROUTINE REFERENCES               *
  27. ; **********************************************************************
  28.      EXTRN     SCRMGR:NEAR,CONV_ASCII:NEAR
  29. ; **********************************************************************
  30. ; *                PUBLIC DECLARES                   *
  31. ; **********************************************************************
  32.      PUBLIC  HDMSG
  33.      PUBLIC  D_ERROR
  34.      PUBLIC  PRT_MSG,LOGERR
  35. ; **********************************************************************
  36. ; *                 MACROS                    *
  37. ; **********************************************************************
  38. ;
  39.      IF1
  40.      INCLUDE HD.MAC
  41.      INCLUDE \SCRMGR\SCRNWORK.MAC
  42.      ENDIF
  43. ; **********************************************************************
  44. ; *                                       *
  45. ; *                   BEGIN                       *
  46. ; *                                       *
  47. ; **********************************************************************
  48. CSEG     SEGMENT PARA PUBLIC 'CODE'
  49.      ASSUME CS:CSEG
  50. HDMSG  PROC    NEAR
  51.      ASSUME  DS:CSEG           ;DATA SEGMENT
  52.      JMP     BY_ID               ;JMP AROUND ID
  53.      ID     HDMSG
  54.      INCLUDE \SCRMGR\SCRNWORK.ASM
  55. ;
  56. PWORK     DB     80 DUP(' ')           ;PRINT AREA
  57. ; **********************************************************************
  58. ; *                 ERROR MESSAGES                   *
  59. ; **********************************************************************
  60. ERR_MSGS LABEL     BYTE
  61.      DB     'UNKOWN ERROR             '     ;ERROR CODE 00
  62.      DB     'COMMAND ABORTED BY CTLR  '     ;ERROR CODE 01
  63.      DB     'ADDRESS MARK NOT FOUND   '     ;ERROR CODE 02
  64.      DB     'ID NOT FOUND             '     ;ERROR CODE 03
  65.      DB     'RESET FAILED             '     ;ERROR CODE 04
  66.      DB     'DRIVE INITIALIZATION ERR '     ;ERROR CODE 05
  67.      DB     'TRANSFER OVER 64K BOUNDRY'     ;ERROR CODE 06
  68.      DB     'BAD SECTOR FLAG DETECTED '     ;ERROR CODE 07
  69.      DB     'UNCORRECTABLE DATA ERROR '     ;ERROR CODE 08
  70.      DB     'CORRECTABLE DATA ERROR   '     ;ERROR CODE 09
  71.      DB     'CONTROLLER ERROR         '     ;ERROR CODE 10
  72.      DB     'SEEK ERROR               '     ;ERROR CODE 11
  73.      DB     'DRIVE TIMED OUT          '     ;ERROR CODE 12
  74.      DB     'DRIVE NOT READY          '     ;ERROR CODE 13
  75.      DB     'UNDEFINED ERROR          '     ;ERROR CODE 14
  76.      DB     'UNKOWN ERROR             '     ;ERROR CODE 15
  77.      DB     'WRITE FAULT              '     ;ERROR CODE 16
  78.      DB     'SENSE ERROR              '     ;ERROR CODE 17
  79.      DB     'SECTOR BUFFER ERROR      '     ;ERROR CODE 18
  80.      DB     'ECC DEVICE ERROR         '     ;ERROR CODE 19
  81.      DB     'CONTROL PROCESS ERROR    '     ;ERROR CODE 20
  82.      DB     'DRIVE NOT CONFIGURED     '     ;ERROR CODE 21
  83.      DB     'INVALID DRIVE SPECIFIED  '     ;ERROR CODE 22
  84.      DB     'INVALID INTERLEAVE       '     ;ERROR CODE 23
  85.      DB     'FORMAT FAILED            '     ;ERROR CODE 24
  86.      DB     'FORMAT COMPLETE          '     ;ERROR CODE 25
  87.      DB     'SURFACE ANALYSIS FAILED  '     ;ERROR CODE 26
  88.      DB     'SURFACE ANALYSIS COMPLETE'     ;ERROR CODE 27
  89.      DB     'SECTOR HAS BEEN FLAGGED  '     ;ERROR CODE 28
  90.      DB     'HEAD SELECT PASSED       '     ;ERROR CODE 29
  91.      DB     'HEAD SELECT FAILED       '     ;ERROR CODE 30
  92.      DB     'READ/WRITE PASSED        '     ;ERROR CODE 31
  93.      DB     'READ/WRITE FAILED        '     ;ERROR CODE 32
  94.      DB     'SEEK TEST PASSED         '     ;ERROR CODE 33
  95.      DB     'SEEK TEST FAILED         '     ;ERROR CODE 34
  96.      DB     'ECC TEST PASSED          '     ;ERROR CODE 35
  97.      DB     'ECC TEST FAILED          '     ;ERROR CODE 36
  98.      DB     'DISK READY FOR RELOCATION'     ;ERROR CODE 37
  99.      DB     '** RELOCATION FAILED **  '     ;ERROR CODE 38
  100.      DB     'CYLINDER OUT OF RANGE    '     ;ERROR CODE 39
  101.      DB     'HEAD OUT OF RANGE        '     ;ERROR CODE 40
  102.      DB     'SECTOR OUT OF RANGE      '     ;ERROR CODE 41
  103.      DB     'DEFECT SCAN FAILED       '     ;ERROR CODE 42
  104.      DB     'DEFECT SCAN COMPLETE     '     ;ERROR CODE 43
  105.      DB     'SHUT THE SYSTEM POWER OFF'     ;ERROR CODE 44
  106. ; **********************************************************************
  107. ; *             EQUATES AND STRUCTURES                *
  108. ; **********************************************************************
  109.      INCLUDE HDEQU.ASM
  110. ; **********************************************************************
  111. ; *                 SCREENS                   *
  112. ; **********************************************************************
  113. ;
  114.   SFIELD E01,E01,25,@LABEL,LO,16,02
  115. ;
  116.   SFIELD E03,E04,,@LABEL,LO,16,02,'  CYL XXXX HEAD XX SECTOR XX - '
  117.   SFIELD E04,E05,25,@LABEL,LO,16,33
  118.   SFIELD E05,E06,04,@LABEL,LO,16,08
  119.   SFIELD E06,E07,02,@LABEL,LO,16,18
  120.   SFIELD E07,E03,02,@LABEL,LO,16,28
  121. ;
  122. BY_ID:
  123. HDMSG  ENDP
  124. ; *********************************************************************
  125. ; *                                      *
  126. ; *            LOG THE ERROR TO HARDCOPY              *
  127. ; *                                      *
  128. ; *********************************************************************
  129. LOGERR     PROC
  130.      PUSHALL
  131.      CMP     P_STAT,0FFH           ;PRINT ON??
  132.      JNE     LOG_00            ;YES
  133.      JMP     LOG_EXIT           ;EXIT
  134. LOG_00:
  135.      LEA     DI,PWORK           ;OUTPUT
  136.      PUSH     DS               ;ESTABLISH
  137.      POP     ES               ;  SEGMENT
  138.      MOV     CX,80               ;LENGTH
  139.      CLD                   ;FORWARD DIRECTION
  140.      MOV     AL,' '                ;PAD CHARACTER
  141.      REP     STOSB               ;CLEAR PWORK
  142.      MOV     DX,BX               ;SAVE FIRST ENTRY
  143. LOG_10:
  144.      LEA     SI,[BX].S_DATA        ;INPUT
  145.      LEA     DI,PWORK           ;OUTPUT
  146.      XOR     CX,CX               ;CLEAR CX
  147.      MOV     CL,[BX].S_COL           ;FETCH COLUMN
  148.      ADD     DI,CX               ;  OFFSET
  149.      MOV     CL,[BX].S_LEN           ;FETCH LENGTH
  150.      REP     MOVSB               ;MOVE IT
  151.      MOV     BX,[BX].S_NEXT        ;NEXT ENTRY
  152.      CMP     BX,DX               ;ALL DONE??
  153.      JNE     LOG_10            ;NO - PROCESS THIS ONE
  154.      MOV     CX,80               ;LENGTH
  155.      LEA     SI,PWORK           ;INPUT
  156. LOG_20:
  157.      LODSB                   ;FETCH A BYTE
  158.      MOV     DL,AL               ;OUTPUT
  159.      MOV     AH,05H            ;PRINT
  160.      INT     21H               ; THE BYTEG
  161.      LOOP     LOG_20            ;NEXT BYTE
  162.      MOV     DL,0DH            ;PRINT
  163.      MOV     AH,05H            ;  ANT
  164.      INT     21H               ;  CARRIAGE
  165.      MOV     DL,0AH            ;  RETURN
  166.      MOV     AH,05H            ;  AND
  167.      INT     21H               ;  LINE FEED
  168. LOG_EXIT:
  169.      POPALL
  170.      RET                   ;RETURN
  171. LOGERR     ENDP
  172. ; *********************************************************************
  173. ; *                                      *
  174. ; *              DISPLAY ERROR MSG                  *
  175. ; *               AL = ERROR CODE                  *
  176. ; *                                      *
  177. ; *********************************************************************
  178. D_ERROR  PROC
  179.      PUSHALL
  180.      SCROLL  LO,4,2,16,78           ;SCROLL
  181.      XOR     AH,AH               ;CLEAR AH
  182.      LEA     SI,ERR_MSGS           ;ERROR MSGS
  183.      XOR     DX,DX               ;CLEAR DX
  184.      MOV     CX,25               ;ENTRY SIZE
  185.      MUL     CX               ;INDEX
  186.      ADD     SI,AX               ;  INTO TABLE
  187.      LEA     BX,E04            ;OUTPUT
  188.      LEA     DI,[BX].S_DATA        ;  MESSAGE
  189.      PUSH     DS               ;ESTABLISH
  190.      POP     ES               ;  SEGMENT
  191.      CLD                   ;FORWARD DIRECTION
  192.      REP     MOVSB               ;MOVE ERROR MESSAGE
  193.      MOV     AX,CUR_CYL           ;FORMAT
  194.      LEA     BX,E05            ;  CYLINDER
  195.      CALL     CONV_ASCII
  196.      XOR     AX,AX               ;CLEAR AX
  197.      MOV     AL,CUR_HD           ;FORMAT
  198.      LEA     BX,E06            ;  HEAD
  199.      CALL     CONV_ASCII
  200.      MOV     AL,CUR_SEC           ;FORMAT
  201.      LEA     BX,E07            ;  SECTOR
  202.      CALL     CONV_ASCII
  203.      WRITE     E03               ;DISPLAY THE MESSAGE
  204.      CALL     LOGERR            ;PRINT THE MESSAGE
  205.      POPALL
  206.      RET